﻿using System;
using WebApiClient;
using Abp.Application.Services;
using System.Collections.Generic;
using System.Threading.Tasks;
using ARchGL.Platform.Jianwei.InputModels;
using ARchGL.Platform.Jianwei.ViewModels;

namespace ARchGL.Platform.Jianwei
{
    /// <summary>
    /// 实名制 接口
    /// </summary>
    public interface IUserRealAppService : IApplicationService
    {
        #region Server 代理接口

        /// <summary>
        /// 注册上传实名制信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ITask<AjaxServerResponse> RegisterUser(RegistUserInput input);

        #endregion

        #region Client 代理接口

        /// <summary>
        /// 6.2	人员批量下发
        /// </summary>
        /// <returns></returns>
        ITask<AjaxClientResponse<List<AddPersonDto>>> GetAddPersonList();

        /// <summary>
        /// 6.3	上传识别结果
        /// </summary>
        /// <returns></returns>
        ITask<AjaxClientResponse> UploadAttendance(EncryptRequestInputBase<UploadAttendanceInput> input);

        /// <summary>
        /// 6.4	删除人员信息
        /// </summary>
        ITask<AjaxClientResponse<List<DelPersonDto>>> GetDelPersonList();

        /// <summary>
        /// 6.5	设备操作后回馈消息给服务端
        /// 考勤设备在执行人员批量下发和删除人员操作后，均需调用该接口与服务器之间进行确认
        /// </summary>
        ITask<AjaxClientResponse> FeedBack(FeedBackInput input);

        #endregion

        #region 代理接口测试方法

        /// <summary>
        /// 1采集
        /// </summary>
        /// <param name="projectUserIds"></param>
        /// <returns></returns>
        Task TestRegisterUser(Guid[] projectUserIds);

        /// <summary>
        /// 2下发
        /// </summary>
        /// <returns></returns>
        Task TestGetAddPersonList();

        /// <summary>
        /// 3考勤
        /// </summary>
        /// <returns></returns>
        Task TestUploadAttendance(UploadAttendanceInput input);

        /// <summary>
        /// 4删除
        /// </summary>
        /// <returns></returns>
        Task TestGetDelPersonList();

        #endregion
    }
}
